package com.xjh.basestudy.designmode.behaviorMode.behaviorMode8_Command.p1_origin;

/**
 * @Author XuJianHua
 * @Date 2022/10/4 22:41
 * @Description
 *
 * 客户端类Client在第4行将灯泡接入开关，依次对其进行了按钮操作，作为结果，我们可以看到第8行中触发的灯亮与灯灭行为。
 * 虽然电灯一切工作正常，但是需要特别注意的是，第3行中我们声明了灯泡类的引用，并于第5行的构造方法中将其初始化，那么无疑这里的开关与灯泡就绑定了，也就是说开关与灯泡强耦合了。
 * 有些读者可能意识到了这里应该使用策略模式，用接口来承接灯泡或者其他类电器，以此来解决耦合问题。当然，这样可以使设备端与控制器端解耦，但控制器与设备接口又耦合在一起了，
 * 简单说就是控制器只能控制某一类接口的设备，依然存在一定的局限性。我们不妨将关注点转向对命令模块的多态性设计，
 * 比如我们的开关命令不应该只能控制灯泡，还要能控制空调、冰箱等设备，而命令也不应该只是开关发出的，
 * 还可以由键盘的回车键Enter与退出键Esc来发出，这时我们就得换一个角度来思考系统设计了。
 */
public class Client {

    public static void main(String[] args) {
        Switcher switcher = new Switcher(new Bulb());
        switcher.buttonPush();
        switcher.buttonPop();

      /*输出：
         按下按钮……
         灯亮。
         弹起按钮……
         灯灭。
       */
    }}